指定vCPU和内存创建Pod

大部分场景下,如果没有特殊的规格需求(如GPU、本地盘等),推荐您指定vCPU和内存来创建ECI Pod(即ECI实例),系统会尝试使用多种ECS规格进行支撑,以提供比ECS单规格更好的弹性和资源供应能力。

规格说明

您可以指定实例或者容器的vCPU和内存来创建ECI实例。如果指定的vCPU和内存不符合要求,系统将自动按照ECI支持的规格进行规整。规整时将向最接近的ECI规格进行规整,同时需满足指定的vCPU和内存≤ECI规格的vCPU和内存。例如:在华东1(杭州)地域创建ECI实例时,声明了7 vCPU,13 GiB内存,则实际创建的ECI实例为8 vCPU,14 GiB内存。

ECI支持的规格如下:

说明
  • 如果未指定vCPU和内存规格,系统默认采用2 vCPU和4 GiB内存的规格创建ECI实例。

  • 目前仅支持一块弹性网卡,暂不支持多网卡能力。

  • 各规格支持的默认临时存储空间大小均为30 GiB。

所有ECI支持地域均支持的规格

vCPU

内存(GiB)

网络带宽能力(出+入)(Gbit/s)(理论上限值)

0.25

0.5、1

0.08

0.5

1、2

0.08

1

2、4、8

0.1

2

1、2、4、8、16

1

4

2、4、8、16、32

1.5

8

4、8、16、32、64

2

12

12、24、48、96

2.5

16

16、32、64 、128

3

24

24、48、96、192

4.5

32

32、64、128、256

6

52

96、192、384

12.5

64

128、256、512

20

仅部分地域支持的规格

重要
  • 下表中的规格仅在部分地域支持,创建以下规格的ECI实例时请确保已指定支持的地域和可用区,否则会因为无库存而导致创建失败。

    支持的地域为:华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华北6(乌兰察布)、华南1(深圳)、华南2(河源)、华南3(广州)、西南1(成都)、新加坡。

  • 不支持指定下表中的规格创建抢占式实例。

vCPU

内存(GiB)

网络带宽能力(出+入)(Gbit/s)(理论上限值)

2

6、10、12、14

1

4

6、10、12、14、18、20、22、24、26、28、30

1.5

6

6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48

1.5

8

10、12、14、18、20、22、24、26、28、30、34、36、38、40、42、44、46、48、50、52、54、56、58、60、62

2.5

配置说明

指定vCPU和内存创建ECI Pod时,支持以下两种:

  • 指定Pod内容器的vCPU和内存:通过定义Containers的limits或requests来指定,建议使用limits。

  • 指定Pod级别的vCPU和内存:通过在Pod metadata中添加k8s.aliyun.com/eci-use-specs的Annotation来指定。

如果您没有指定,或者同时指定了limits、requests和eci-use-specs,实际生效情况如下:

场景

Pod规格

全部未指定

按默认规格(2vCPU,4 GiB内存)

仅指定limits

汇总limits

仅指定requests

汇总requests

同时指定limits和requests

汇总limits(忽略requests)

仅指定eci-use-specs

按eci-use-specs的值

指定limits或requests的同时指定eci-use-specs

按eci-use-specs的值

说明

如果汇总limits、requests后的规格,或者eci-use-specs指定的规格不满足ECI规格要求,系统会自动进行资源规整,并按规整后的规格进行计费。

指定Pod内容器的vCPU和内存

该方式为Kubernetes默认方式。每个ECI Pod最多可以支持20个容器,每个容器的vCPU和内存规格可以自定义配置,但汇总到Pod级别时需满足ECI Pod的vCPU和内存约束。

说明

ECI支持为特定容器(例如Sidecar容器)设置环境变量,实现在资源规整时忽略该容器,避免资源浪费。更多信息,请参见配置资源规整时忽略特定容器

您可以直接定义Container的limits来指定该容器的vCPU和内存。配置示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: "500m"      #指定nginx容器的vCPU为0.5 vCPU
            memory: "1024Mi"   #指定nginx容器的内存为1 GiB
      - name: busybox
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        command: ["sleep"]
        args: ["999999"]
        resources:
          limits:
            cpu: "1000m"   #指定busybox容器的vCPU为1 vCPU
            memory: "2048Mi"  #指定busybox容器的内存为2 GiB

指定ECI Pod的vCPU和内存

该方式下,系统会尝试使用多种ECS规格进行支撑,以实现更好的弹性和资源供应能力。

说明

如果您对规格有一定要求,例如只想使用6代ECS规格,可添加Annotation来指定ECS规格代数。更多信息,请参见指定ECS规格代数创建Pod

该方式还具备以下优势:

  • Pod内容器可以不用指定vCPU和内存规格或者限制资源上限,各容器可以更大程度地共享资源。

  • 在基因计算和Istio场景下,业务框架会自动为Pod添加Sidecar容器,通过指定Pod级别规格,ECI可以无缝对接这类业务框架。

您可以在Pod metadata中添加Annotation来指定Pod的vCPU和内存,配置示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-use-specs : "2-4Gi"   #指定ECI Pod的vCPU为2 vCPU,内存为4 GiB
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
      - name: busybox
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        command: ["sleep"]
        args: ["999999"]
        resources:
          limits:
            cpu: "500m"     #容器的vCPU上限        
            memory: "1024Mi"   #容器的内存上限